package org.lcc.mapper;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.*;
import org.lcc.model.VO.ExamAndAnswerVO;
import org.lcc.model.VO.ExamAndAnswerlist;
import org.lcc.model.VO.StudentgradeinquiryVo;
import org.lcc.model.entity.StudentMistakeEntity;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Mapper
public interface TestResultsMapper {


/**
 * 获取考试成绩列表
 *
 * @param startTime  开始时间
 * @param endTime    结束时间
 * @param searchText 搜索关键词
 * @param offset
 * @param pageSize
 * @return 考试成绩列表
 */
List<Map<String, Object>> getExamScoreList(@Param("startTime") String startTime,
                                           @Param("endTime") String endTime,
                                           @Param("searchText") String searchText,
                                           @Param("offset") int offset,
                                           @Param("pageSize") int pageSize);

/**
 * 获取考试成绩列表总数
 * @param startTime 开始时间
 * @param endTime 结束时间
 * @param searchText 搜索关键词
 * @return 总记录数
 */
Integer getExamScoreListCount(@Param("startTime") String startTime, 
                             @Param("endTime") String endTime, 
                             @Param("searchText") String searchText);

    /**
     * 获取考试基本信息
     * @param examId 考试ID
     * @return 考试基本信息
     */
    Map<String, Object> getExamInfo(@Param("examId") Integer examId);

    /**
     * 获取考试统计数据
     * @param examId 考试ID
     * @return 考试统计数据
     */
    Map<String, Object> getExamStats(@Param("examId") Integer examId);

    /**
     * 获取分数分布
     * @param examId 考试ID
     * @return 分数分布
     */
    Map<String, BigDecimal> getScoreDistribution(@Param("examId") Integer examId);
    //获取班级信息
    List<Map<String, Long>> getExamClass(String schoolNumber);
    //获取试卷信息
    List<Map<String, Long>> getExam( @Param("classID") String classID);
    //获取饼形图信息
    String getPieChart(@Param("classID") String classID,@Param("examId") String examId);
    //学生成绩查询
    List<StudentgradeinquiryVo> Studentgradeinquiry(@Param("student_id") String studentID);
    //学生成绩详情查询
    ExamAndAnswerVO Studentresultsfordetails(@Param("exam_id") String examId,@Param("student_id") String studentID);

    List<ExamAndAnswerlist> Studentresultsfordetailsone(@Param("exam_id") String examId,@Param("student_id") String studentID);
    //获取学生所属班级信息
    List<Map<String, Object>> getStudentClassInfo(@Param("student_id") String studentID);
//查询该用户的的密码
    String selectPasswordByUsername(@Param("username") String username);
//修改邮箱
    Integer updateEmail(@Param("newEmail") String newEmail,@Param("username") String username);
//修改密码
    Integer updatePassword(@Param("username") String username,@Param("newPassword") String hashedPassword);
//获取学生错题本信息
    List<StudentMistakeEntity> getMistakeCollection(@Param("student_id") String studentID, 
                                                  @Param("offset") int offset,
                                                  @Param("pageSize") int pageSize,
                                                  @Param("searchContent") String searchContent,
                                                  @Param("status") String status);
    
    //获取错题本总数
    Integer getMistakeCollectionCount(@Param("student_id") String studentID,
                                    @Param("searchContent") String searchContent,
                                    @Param("status") String status);
//更新错题状态
    Integer updateMistakeStatus(@Param("mistake_id") Integer mistakeId,@Param("status") String status);
}
